//==========================================================================
// Copyright (c) 2000-2008,  Elastos, Inc.  All Rights Reserved.
//==========================================================================

#if !defined(__CBASICFILESYSTEM_H__)
#define __CBASICFILESYSTEM_H__

#define _NO_CKTFSFILESYSTEM_CLASSOBJECT_
#include "_CKtfsFileSystem.h"

class CKtfsFileSystem : public _CKtfsFileSystem
{
public:
    CARAPI Sync();

    CARAPI GetRoot(
        /* [out] */ IBasicDirectory * * piRoot);

    CARAPI Lookup(
        /* [in] */ WString pathname,
        /* [out] */ IBasicFile * * piBasicFile);

    CARAPI GetStat(
        /* [out] */ FileSystemStat * pFileSystemStat);

    CARAPI Mount(
        /* [in] */ WString type,
        /* [in] */ WString dir,
        /* [in] */ WString vDevName,
        /* [in] */ UINT flags);

    CARAPI Unmount(
        /* [in] */ WString dir,
        /* [in] */ UINT flags);

    CARAPI BindDriver(
        /* [in] */ WString wstrDevName);

    CARAPI UnbindDriver();

    CKtfsFileSystem();
    CKtfsFileSystem(wchar_t *wcsDisk);
    ~CKtfsFileSystem();

protected:
    wchar_t * m_wstrDisk;
    Interlocked     m_cRef;
};

#endif //!(__CBASICFILESYSTEM_H__)
